package com.lj.back.manage.scaffold.module.sys.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.lj.back.manage.scaffold.common.DTO.PageQuery;
import com.lj.back.manage.scaffold.module.sys.DTO.SysPermDTO;
import org.springframework.transaction.annotation.Transactional;

import javax.validation.constraints.NotNull;
import java.util.LinkedHashSet;
import java.util.Set;

/**
 * 后台管理---权限service
 * @author lv
 * @version 1.0.0
 */
public interface SysPermService {

    /**
     * 根据菜单获取权限列表
     * @param menuId 菜单ID
     * @return 权限列表
     */
    Set<String> listPermissionsByMenu(@NotNull(message = "{menu.id.notnull}") Long menuId);

    /**
     * 新增权限
     * @param perm
     * @return
     */
    @Transactional(rollbackFor = Throwable.class)
    Long addPerm(SysPermDTO perm);

    /**
     * 修改权限
     * @param perm
     * @return
     */
    boolean updatePerm(SysPermDTO perm);

    /**
     * 分页查询权限列表
     * @param pageQuery
     * @return
     */
    IPage<SysPermDTO> listPerms(PageQuery pageQuery);

    /**
     * 获取全部权限列表
     * @return
     */
    LinkedHashSet<SysPermDTO> listPerms();

    /**
     * 根据权限ID查询权限列表
     * @param id
     * @return
     */
    SysPermDTO getPermInfo(@NotNull(message = "{perm.id.notnull}") Long id);
}
